perm filename PUP5.TAL[AP,DBL] blob sn#104027 filedate 1974-05-30 generic text, type T, neo UTF8
00100	Automatic Programming Group Meeting, Thursday, May 30.
00200	
00300	
00400	
00500	
00600	
00700	
00800	
00900	
01000	
01100	
01200	
01300			PUP5
01400	Programming-Understanding Program    by   Doug Lenat
01500	
01600	
01700	
01800	
01900	
02000	
02100	
02200	Why existing ideas are insufficient.
02300	The new ideas.
02400	Applying them to a nontrivial task.
02500		The task.
02600		An example.
02700		The implementation.
02800		Results.
02900	Conclusions and Suspicions.
03000	
03100	
     

00100	1. Why these won't do Automatic Structured Programming of big programs:
00200		Turing Machines, Production Rules, Markov Algorithms, Resolution
00300			Big, clumsy, slow pgms, difficult to write.
00400		Frames
00500			Putting default values in (when in doubt) leads to bugs.
00600		Templates
00700			How to link them?  How to fill them in?
00800		Primitives (and syntactic constraints)
00900			This bottom-up approach is unable to get big programs.
01000		Actors
01100			Too limited access, too little structure ∀ actor.
01200		Demons, Multiple Processes, Alternative Control Contexts,
01300			Alternative Data Contexts, Hypothetical Reasoning
01400			 Forcing everything into 1 mechanism leads to poor results.
01500		Heterarchy (the magic word of the seventies)
01600			One must work to get this; it is too general to criticize.
01700		Structured Programming
01800			OK, except no guidance at primitive levels.
01900		Assertions versus Pattern-directed invokation of procedurally
02000			embedded knowledge
02100			 Proc. poor for checking predicates
02200			 Assertions poor for describing how to execute a sequence
02300		QLISP, PLANNER, CONNIVER, ...
02400			Too slow, use too much core. A vehicle, not a destination.
02500		PW1, Examples-Program, ...
02600			Limited grammar of output pgms makes task manageable
02700	        HACKER, PUP1, ...
02800			Pre-analyzing all bugs; pgmming by subgoaling and debugging
02900		Hoare, Dijkstra, Floyd, ...
03000			OK, but 1 billion substandard modules produced ∀ of these.
03100	
03200	
03300	2. Take the best of each of these, add pieces of new ideas, shake well.
03400		System Organization
03500	        Idea 1: Use the best parts of all the best old ideas
03600			examples
03700	        Idea 2: Let each being have and use knowledge of being structure
03800	            The assumption
03900	            Examples
04000	        Idea 3: Being X can not only do X, but can write new, similar beings
04100	            Examples
04200	        Idea 4: Debugging is a consequence of human memory limitations
04300	            examples
04400	        Idea 5: Programmers should defer each decision as long as possible
04500	            examples
04600		Benefits hoped for
04700	
     

00100	3. Pick a nontrivial programming problem, and try to do it using the ideas.
00200	  
00300	    The Task: Write CF, a miniature version of JUMBO, a miniature
00400	        version of Winston's Concept Formation program
00500	         Diagram of what PUP5 does; diagram of what CF must do.
00600	    An example: "Scene E is incompatible with some feature of the model scene G"
00700	         How a human handles this
00800	         How PUP5 handles this
00900	    Implementation: The organization of the PUP5 system
01000	         Amount of problem-specific info, and an example
01100	         Amount of programming knowledge, and an example
01200	         Excruciatingly comprehensive explication of the knowledge needed to
01300	               write concept formation programs
01400	         How PUP5's beings were actually decided on: Protocol
01500	         Confessions: Kludges, Direct function calls, Functions,
01600	                      Natural Language Front End, Elegance vs Efficiency
01700	         Program parameters: Size, Core, Time, Complexity
01800	    Results
01900	         What went in (user-PUP5  dialog)
02000	         What came out (the final CF program it produced)
02100	              Efficiency, Style, Length;
02200	              Surprise: CF, too, understands what it's doing!!
02300	         What else could come out (now; with a little coaxing; never)
02400	         Is the CF program really stored somewhere inside PUP5?
02500	              somewhere  inside the user?
02600	
02700	
02800	4. Conclusions
02900	    Was it worth 8 months?  Was it worth this one talk?
03000	    Was it the right way to solve the problem? Was it the right problem?
03100	    Future work:
03200	         summer: several more programs turned out, more faithful to the ideas
03300	         theory: what kinds of programs is it well {poorly} suited to?
03400	         destiny: what will happen to the ideas? did they ever really exist?
03500	         cooordination with other systems: ease, utility, who's in control?
     

00100	    		PUP5
00200	
00300		User		 CF
00400	     (dialogue)	       program
00500	
00600	
00700	
00800	
00900		Scenes		  	   Model network ∀ scene name
01000				CF
01100	   Scene Names			   Guess for scene name (if not supplied)
01200	
01300	
01400	
01500	PROGRAM	LENGTH	OUTPUT PGMS   CPU TIME 	MIN/LINE  LENGTH/OUTPUT  EFFORT
01600	
01700	PW1	20 pp	3-5 lines	3 min	 .6    	   	4	 3 mos.
01800	EXAMPLES 20 pp	4-5 lines	2 min	 .4		4	 6 mos.
01900	PUP1	60 pp	3-15 lines     10 min	 .7		4	 4 mos.
02000	HACKER	60 pp	4-20 lines     10 min	 .5		3	12 mos.
02100	PUP5	100 pp  500-2000 lines 3000 min  1.5		0.05     8 mos.
02200	
02300	
02400	
02500	The set of questions each being answers (the set of being parts) is:
02600		IDEN IMPLICIT:ARGS EXPLICIT:ARGS EXPLICIT:ARGS:CHECK NLAMBDA
02700		NON:EVAL:ARGS WHAT HOW WHY SPEC:WHY MAIN:EFFECTS MINOR:EFFECTS
02800		WHEN META:CODE COMMENTS PREREQUISITES COREQUISITES DEMONS
02900		POSTREQUISITES AFFECTS COMPLEXITY:VECTOR GENERALIZATIONS 
03000		SPECIALIZATIONS ALTERNATIVES PREDICATE DATA:STRUCTURE
03100		ENCODABLE INHIBIT:CURRENT:DEMONS FORM:CHANGING